package com.wrupple.muba.catalogs.server.service;

import java.util.List;

import com.wrupple.muba.common.domain.FilterData;
import com.wrupple.vegetate.domain.CatalogDescriptor;
import com.wrupple.vegetate.domain.CatalogObject;
import com.wrupple.vegetate.domain.exceptions.DataLayerException;

public interface CatalogDataAccessObject<T extends CatalogObject> {
	
	//[WHERE where_definition]
	List<T> read(FilterData filterData) throws DataLayerException;

	T read(String targetEntryId) throws DataLayerException;

	T update(String targetEntryId, CatalogObject updatedEntry) throws DataLayerException;

	T create(CatalogObject o) throws DataLayerException;

	T delete(String targetEntryId) throws DataLayerException;

	CatalogDescriptor getCatalogDescriptor() throws DataLayerException;

}
